<html>
<head>
<title>
A Tour of NTL: Introduction </title>
</head>

<body bgcolor="#fff9e6">

<center>
<img src="arrow1.gif" alt="[Previous]" align=bottom>
 <a href="tour.html"><img src="arrow2.gif" alt="[Up]" align=bottom></a> 
<a href="tour-examples.html"> <img src="arrow3.gif" alt="[Next]" align=bottom></a>
</center>


<h1>
<p align=center>
A Tour of NTL: Introduction
</p>
</h1>

<p> <hr> <p>


<p>
NTL is a high-performance, portable C++ library providing
data structures and algorithms 
for arbitrary length integers;
for vectors, matrices, and polynomials over the integers and over
finite fields; and for arbitrary precision floating point arithmetic.

<p>
NTL provides high quality implementations of state-of-the-art
algorithms for:

<ul>

<li>
arbitrary length integer arithmetic and arbitrary precision
floating point arithmetic;

<li> 
polynomial arithmetic over the integers and finite fields
including basic arithmetic, polynomial factorization, 
irreducibility testing, 
computation
of minimal polynomials, traces, norms, and more;

<li>
lattice basis reduction, including very robust and fast implementations
of Schnorr-Euchner, block Korkin-Zolotarev reduction,
and the new Schnorr-Horner pruning heuristic for
block Korkin-Zolotarev;

<li>
basic linear algebra over the integers, 
finite fields, and arbitrary precision
floating point numbers.

</ul>

<p>
NTL's polynomial arithmetic is one of the fastest available anywhere,
and has been used to set "world records" for polynomial factorization
and determining orders of elliptic curves.


<p>
NTL's lattice reduction code is also one of the best available anywhere,
in terms of both speed and robustness, and one of the few 
implementations of
block Korkin-Zolotarev reduction with the Schnorr-Horner pruning heuristic.
It has been used to "crack" several cryptosystems.


<p>
NTL can be easily installed in a matter of minutes 
on just about any platform,
including virtually any 32- or 64-bit machine running
any flavor of Unix,
as well as PCs running Windows 95, 98, or NT, and Macintoshes.
NTL achieves this portability by avoiding esoteric C++ features,
and by avoiding assembly code; it should therefore remain usable
for years to come with little or no maintenance, even as
processors and operating systems continue to change and evolve.
However, NTL can be used in conjunction  with
<a href="tour-gmp.html">GMP (the GNU Multi-Precision library)</a>
for enhanced performance.
NTL can also be used in conjunction with the 
<a href="tour-gf2x.html"><tt>gf2x</tt></a> library for faster
arithmetic of large degree polynomials over <i>GF(2)</i>.


<p>
NTL provides a clean and consistent interface to
a large variety of classes representing mathematical objects.
It provides a good environment for easily 
and quickly implementing new
number-theoretic algorithms, <em>without sacrificing performance</em>.

<p>
NTL is written and maintained by 
<a href="http://www.shoup.net">Victor Shoup</a>
with some contributions made by others
(see <a href="tour-ack.html">Acknowledgements</a>).

<p>

<h2>
Legalistic Nonsense
</p>
</h2>
<p>
NTL is <i>free software</i>, and may be used according to
the terms of the GNU General Public License.
<p>
<a href="copying.txt">[the precise licensing information of NTL]</a>
<p>
<a href="http://www.gnu.org">[more information
about the GNU General Public License]</a>

<p>

<center>
<img src="arrow1.gif" alt="[Previous]" align=bottom>
 <a href="tour.html"><img src="arrow2.gif" alt="[Up]" align=bottom></a> 
<a href="tour-examples.html"> <img src="arrow3.gif" alt="[Next]" align=bottom></a>
</center>

</body>
</html>
